/**
 * 
 */
package com.nari.sink.service;

import java.io.File;
import java.util.List;

import com.nari.coreframe.service.IGenericService;
import com.nari.platform.model.PageCond;
import com.nari.platform.model.ResponseMsg;
import com.nari.platform.model.ResultWithPageCond;
import com.nari.sink.bo.ISinkerStandardDict;

/**
 * 
 * @author Xiaopeng
 * @date 2014-4-15
 */
public interface ISinkerStandardDictService extends IGenericService<ISinkerStandardDict, String> {

	/**
	 * 分页查询散热器型号字典
	 * @param dictSerious
	 * @param sinkType
	 * @param brand
	 * @param pageCond
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-4-15
	 */
	public ResultWithPageCond<ISinkerStandardDict> querySinkerDictPage(String dictSerious, 
			String sinkType, String brand, PageCond pageCond) throws Exception;
	
	/**
	 * 根据散热器特征信息查询对应型号参数的标准散热器列表
	 * 散热器匹配原则：
	 * 优先级一：主要参数匹配，包括型号、中心距
	 * 优先级二：次要匹配参数，包括品牌、散热器尺寸（高、宽、长）、单片功率
	 * 说明：按照优先级从高到低的结果集最少的匹配原则，结果集越少，说明匹配精确度越高；
	 * 相应的数据冗余度可能越高，即同一型号参数的散热器因为参数等误差未正确匹配
	 * @param sinkerDict
	 * @return
	 * 返回结果说明：
	 * 1、结果集为空或结果集个数为0，说明字典库不存在此型号参数的标准散热器，视为正确匹配
	 * 2、结果集个数为1，说明字典库已存在此型号参数的标准散热器，也视为正确匹配
	 * 3、结果集个数大于1，说明字典库存在多个同种类型参数的标准散热器，视为匹配异常
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-4-18
	 */
	public List<ISinkerStandardDict> queryByCharacteristicInfo(ISinkerStandardDict sinkerDict) throws Exception;
	
	/**
	 * 带附件上传的标准散热器信息保存及修改
	 * @param sinkerDict
	 * @param attachFile
	 * @param fileName
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-4-18
	 */
	public ResponseMsg saveOrUpdateSinkerDict(ISinkerStandardDict sinkerDict, File attachFile, 
			String fileName) throws Exception;
	
	/**
	 * 删除标准散热器照片附件
	 * @param sinkerDictUID
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-4-18
	 */
	public ResponseMsg deleteSinkerDictAttachFile(String sinkerDictUID) throws Exception;
	
	/**
	 * 通过标准散热器唯一标识删除散热器信息，并删除对应的散热器照片附件
	 * @param sinkerDictUID
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-4-18
	 */
	public ResponseMsg deleteSinkerDictByUID(String sinkerDictUID) throws Exception;
	
	/**
	 * 为标准散热器添加照片附件
	 * @param attachFile
	 * @param fileName
	 * @param sinkerDictUID
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-4-19
	 */
	public ResponseMsg saveSinkerDictImageUpload(File attachFile, String fileName, 
			String sinkerDictUID) throws Exception;
	
	/**
	 * 标准散热器型号数据的批量导入
	 * @param excelFile
	 * @param excelFileName
	 * @return
	 * @throws Exception
	 * @author Xiaopeng
	 * @date 2014-4-17
	 */
	public ResponseMsg saveOrUpdateSinkerDictBatch(File excelFile, String excelFileName) throws Exception;
}
